<style>
</style>
<template>
    <ly-page>
        <ly-navi title="dataStore"></ly-navi>
        <ly-page-content>

            <ly-markdown>
<pre v-pre>

## Ly.dataStore
------
#### 和table配合使用
~~~
<el-table v-loading="store.loading" :data="store.data" v-on:selection-change="store.select($event)"
          v-on:sort-change="store.sort($event)"></el-table>


<el-pagination
        background
        :page-size="store.params.step"
        v-on:size-change="store.sizeChange($event)"
        v-on:current-change="store.load($event)"
        :current-page="store.params.page"
        layout="total,sizes,prev, pager, next, jumper"
        :total="store.total">
    </el-pagination>

~~~
#### 和select配合使用
 ~~~
<el-select v-model="form.stu_id" placeholder="请选择学员，支持姓名/手机号检索" clearable filterable remote
           :remote-method="stuStore.search('search')" :loading="stuStore.loading"
           v-loading="stuStore.loading">
            <el-option v-for="item in stuStore.data" :key="item.id" :label="item.name" :value="item.id">

            </el-option>
</el-select>
 ~~~
####构造方法
  ~~~

data:function(){
    var store=Ly.dataStore('路径');
    或
    var store=Ly.dataStore({url:'路径'});
    store.load(1);
    return {
        store:store
        }
    }

  ~~~

#### 参数
 >参数 支持 string 或 object,string时相当于之传入 url

| 名称  |说明   | 类型|默认值|
| ------------ | ------------ |------------ |
|  url | 网络加载路径	  |string|-|
|  method | 网络请求方式 |get/post|get|
| params | 默认参数,调用 reset 时 params 不会被清除|object |{step: 20,page: 1}|
| transform | 数据转化方法,每次请求结束后都会走这个方法的数据进行整理|function	  |- |
|  pk | 数据的主键	  |string|id|
| name |名称,如果不为空,组件销毁后参数会保留,下次同名的 store 会复用参数|string |-|
| data|用于创建虚拟数据,如果不为空,会不走网络,如果是function 类型的 返回对应的数组 |array,function |-|
| total | 虚拟数据时,显示的数据总量|int |- |

####网络返回数据结构
~~~
无需分页,直接返回数据数组

如 [{id:1,name:'name1'},{id:2,'name':'name2'}]

需分页返回
{
    'data 或 list':[]
    'total 或 count':100
}
~~~

#### 基础方法


| 名称  |说明   | 参数|返回|
| ------------ | ------------ |------------ |
| load | 加载数据|page:页码 默认 1 |-|
| reset | 重置搜索条件	  |-|-|


#### 操作方法

| 名称  |说明   | 参数|参数说明|
| ------------ | ------------ |------------ |
| do | 执行操作|msg, action, row, params, load(默认:true) |params如果为null,会提交row,否则会提交params+{id:id} |
| allDo | 对选中的数据批量操作|msg, action, params |会提交{ids:选中数据的id}+params |
| delete|执行删除操作时调用 |msg, action, row, params, load |会提交params+{id:id}|
| input | 弹出input 框,进行更新数据|msg, action, name, row, params, def, load |- |
| update |更新一条数据 |msg, action,id, column, value|column为 string时更新一个键,object 时更新多个键 |



#####参数说明
| 名称  |说明   | 参数|可否为空|
| ------------ | ------------ |------------ |
| msg | 不为空时会弹出确认框,msg 为确认框的说明文字|string ||
| action |方法名,如果不是/开头 会通过 store.url进行计算,计算方法 url去掉最后一个/的路径+action 如 url=/m/list action=save 正式提交路径为 /m/save |string |- |
| row|一条数据,el-table中就是 scope.row |- |-|
| params | 提交的参数  |- |- |
| load |提交完后是否重新加载,如果不重新加载会将提交数据和当前row合并 |- |- |
| input特有参数 |
| name |弹出 input 时绑定的键 |- |- |
| def |弹出 input 时默认数据 |- |- |
| update特有参数 |
| id |需要更新数据的id |- |- |
| column |需要更新数据的键string,或者需要更新的{object} |- |- |
| value |需要更新数据的键对应的值,或留空 |- |- |



#### 和 `el-table`,`el-pagination` 配合的方法

| 名称  |说明   | 参数|返回|
| ------------ | ------------ |------------ |
| sizeChange | 完成el-pagination的 size-change 事件|step:每页条数 	  |- |
| select |完成 el-table的选中变化事件|string |-|
| sort | 完成 el-table的排序事件|int |- |

### 和 ly-table 配合使用
 ~~~
    选择框
    <el-checkbox v-model="scope.row.__checked" v-on:change="store.onItemCheckChange()"></el-checkbox>
 ~~~


#### 和 `el-select` 配合的方法
| 名称  |说明   | 参数|返回|
| ------------ | ------------ |------------ |
| search | 虚拟数据时,显示的数据总量|int |- |



                  </pre>
            </ly-markdown>

        </ly-page-content>
    </ly-page>
</template>
<script>
    Rap.define("", [], function () {
        return {
            data: function () {
                return {
                    message: '需要复制的文本'
                }
            },
            mounted: function () {

            },
            methods: {
                onCopy: function () {
                    this.$notify({
                        title: '提示',
                        message: '复制成功',
                        type: 'success'
                    });

                }, onError: function () {
                    this.$notify({
                        title: '提示',
                        message: '复制失败',
                        type: 'error'
                    });
                }
            }
        }
    })
</script>